# 读取输入并计算最多能捞到的菜数

n, m = map(int, input().split()) # 读取菜的数量n和手速m

ready_times = []
for _ in range(n):
    x, y = map(int, input().split()) # 读取每道菜的下锅时间x和煮熟时间y
    ready_times.append(x + y) # 计算并存储合适的时间

ready_times.sort() # 对所有菜的合适时间进行排序

count = 1 # 记录最多能捞到的菜数，第一个菜必捞
last_time = ready_times[0] # 记录上次捞菜的时间

for i in range(1, n):
    if ready_times[i] >= last_time + m: # 检查当前菜的合适时间是否满足时间间隔
        count += 1
        last_time = ready_times[i] # 更新最后捞菜时间

print(count) # 输出最多能捞到的菜数